创建时间: | 2018/4/19 10:04 |
来源: | https://www.zhihu.com/question/53064373?sort=created |
参照以下步骤,对着书看,包会。如果你按照这样的步骤学会了,欢迎留言让我知道。如果没学会,欢迎提问我会尽力解答。
学习先决条件:指针基础 数组和链表 图的基本概念(如边,顶点,路径,权值)
1 理解图的两大存储结构
1-1 邻接矩阵
1-2 邻接表
注意:邻接表中,指针数组里的每一个指针都是一个单链表的头指针
注意:单链表里每个节点里存储的是图中每条边的信息。
2 理解图的遍历算法
2-1 深度优先遍历 dfs
注意:花半小时看懂dfs的递归代码。
2-2 宽度优先遍历 bfs
注意:又叫广度优先算法,需要一个队列,用非递归实现,请用半小时看懂实现代码。
3 图的最小代价生成树算法
3-1 普里姆算法
注意:把书上给的图文例子看懂。
3-2 克鲁斯卡尔算法
注意:把书上给的图文例子看懂
注意:克鲁斯卡尔的时间复杂度
4 AOV和AOE网络
4-1 AOV 拓扑排序算法过程
注意:AOV和AOE都可以理解为一个工程图,工程由很多项目组成,项目直接有相互依赖。不同的是,AOV图中的顶点代表项目,对比后文的AOE。
4-2 AOE 最长路径
注意:与AOV相反,AOE用边来代表项目,因此边的权值可以理解为这个项目消耗的时间。